<?php

/**
 * Skriver ut inloggningsformulär och hanterar indata från användaren
 */ 
class LoginView implements ILoginView
{	
	// Strängar ur POST-arrayen
	private static $_username 	= "username";
	private static $_password 	= "password";
	private static $_login 		= "login";
	private static $_logout 	= "logout";
	private static $_rememberMe = "rememberMe";
	
	/**
	 * Kapslar in en sträng med en html-tagg
	 * @param string HTML-tag to use
	 * @param string String to encapsulate
	 */
	public function encapsulateString($tag, $string)
	{
		return "<$tag>$string</$tag>";
	}
	
	/**
	 * HTML för login-box
	 * @return HTML String
	 */	
	public function createLoginBox()
	{	
		$html = 
		'<form method="post" action="index.php">
			<fieldset>
				<label for="'.self::$_username.'">Användarnamn: </label>
				<input type="textfield" id="'.self::$_username.'" name="'.self::$_username.'" /><br/>
				<label for="'.self::$_password.'">Lösenord: </label>
				<input type="password" id="'.self::$_password.'" name="'.self::$_password.'" /><br/>
				<input type="submit" value="Logga in" name="'.self::$_login.'" />
				<label for="'.self::$_rememberMe.'">Kom ihåg mig: </label>
				<input type="checkbox" id="'.self::$_rememberMe.'" name="'.self::$_rememberMe.'" />
			</fieldset>
		</form>';
		
		return $html;
	}
	
	/**
	 * HTML för logout-box
	 * @return HTML String
	 */
	public function createLogoutBox()
	{
		$html = 
		'<form method="post" action="index.php">
			<input type="submit" value="Logga ut" name="' . self::$_logout .'" />
		</form>';
		
		return $html;
	}

	/**
	 * Lagrar användarnamnet i som sessionsvariabel
	 */
	public function saveUserNameInSession($user)
	{
		$_SESSION[self::$_username] = $user;
	}
	
	/**
	 * Hämtar användarnamnet ur SESSION-arrayen
	 * @return String | null
	 */
	public function getUserNameFromSession()
	{
		if(isset($_SESSION[self::$_username]))
			return $_SESSION[self::$_username];
		
		return NULL;
	}
	
	/**
	 * Hämtar användarnamnet ur GET-arrayen
	 * @return String | null
	 */
	public function getUserName()
	{
		if(isset($_POST[self::$_username]))
			return $_POST[self::$_username];
		
		return NULL;
	}
	
	/**
	 * Hämtar lösenordet ur GET-arrayen
	 * @return String | null
	 */
	public function getPassword()
	{
		if(isset($_POST[self::$_password]))
			return $_POST[self::$_password];
		
		return NULL;
	}
	
	/**
	 * Kontrollerar om användaren försökt att logga in
	 * @return Bool | null
	 */
	public function triedToLogin()
	{
	 	if(isset($_POST[self::$_login]))
			return true;
		
		return false;
	}

	/**
	 *	Kontrollerar om användaren försökt logga ut
	 *  @return Bool | null
	 */
	public function triedToLogout()
	{
		if(isset($_POST[self::$_logout]))
			return true;
		
		return false;
	}
	 
	 /**
	 * Kontrollerar om användaren vill fortsätta vara inloggad
	 * @param seconds int
	 * @return bool
	 */
	public function rememberMe($seconds)
	{
		if(isset($_POST[self::$_rememberMe]) && $_POST[self::$_rememberMe] == "on")
		{
			setcookie(self::$_username,$this->GetUserName(),time() + $seconds);
			setcookie(self::$_password,$this->GetPassword(),time() + $seconds);
			return true;
		}
		else
		{
			// Tar bort cookies (så utgångsdatum passerat)
			$this->forgetMe();
			return false;	
		}
	}
	
	/**
	 * Tar bort cookien över användarens inloggningsuppgifter
	 * @return bool
	 */
	public function forgetMe()
	{
		if(isset($_COOKIE[self::$_username]) && isset($_COOKIE[self::$_password]))
		{
			// Tar bort cookies (så utgångsdatum passerat)
			setcookie(self::$_username,"",time() - 1);
			setcookie(self::$_password,"",time() - 1);
			return true;
		}
		else 
			return false;
	}
	
	/**
	 * Returnerar sparat användarnamn och lösenord från cookie
	 * @return array | null username[0] and password[1]
	 */
	public function getSavedLogin()
	{
		// Returnera användarnamnet och lösenord om dessa finns sparade i en Cookie
		if(isset($_COOKIE[self::$_username]) && isset($_COOKIE[self::$_password]))
			return array($_COOKIE[self::$_username], $_COOKIE[self::$_password]);
		else
			return null;
	}
}
?>